const WebSocket = require('ws');
const express = require('express');
const path = require('path');

// 创建express应用
const app = express();
const PORT = 3000;

// 设置静态文件服务
app.use(express.static(path.join(__dirname, '../client')));

// 创建HTTP服务器
const server = app.listen(PORT, () => {
    console.log(`HTTP服务器运行在端口 ${PORT}`);
});

// 创建WebSocket服务器
const wss = new WebSocket.Server({ server });

// 存储所有连接的客户端
const clients = new Set();

// WebSocket连接处理
wss.on('connection', (ws) => {
    // 将新客户端添加到集合中
    clients.add(ws);
    console.log('新用户连接成功');

    // 广播用户数量
    broadcastUserCount();

    // 处理接收到的消息
    ws.on('message', (message) => {
        try {
            const data = JSON.parse(message);
            // 广播消息给所有客户端
            broadcast(data);
        } catch (e) {
            console.error('消息格式错误:', e);
        }
    });

    // 处理客户端断开连接
    ws.on('close', () => {
        clients.delete(ws);
        console.log('用户断开连接');
        broadcastUserCount();
    });
});

// 广播消息给所有客户端
function broadcast(data) {
    const message = JSON.stringify(data);
    clients.forEach((client) => {
        if (client.readyState === WebSocket.OPEN) {
            client.send(message);
        }
    });
}

// 广播当前在线用户数量
function broadcastUserCount() {
    const count = clients.size;
    broadcast({
        type: 'userCount',
        count: count
    });
}
